/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package TablaDeSimbolos;

import java.util.Hashtable;

/**
 *
 * @author Administrador
 */
public class ElementoDePila {
    Hashtable<String, Elemento> tabla;
    String identificador="";

    public ElementoDePila(){
        tabla = new Hashtable();
    }
    
    public ElementoDePila(String ident){
        tabla = new Hashtable();
        this.identificador=ident;
    }

    public void registrarConstante(String lexema, Constante Ct){
        
        tabla.put(lexema.toUpperCase(), Ct);
    }

    public void registrarVariable(String identificador, int nivelLexico, int offset, Tipo tipo){
        Variable var =  new Variable(nivelLexico, offset, tipo);
        tabla.put(identificador.toUpperCase(), var);
    }

    public void registrarFuncion(String identificador, Funcion f){
        tabla.put(identificador.toUpperCase(), f);
    }

    public void registrarProcedimiento(String identificador, Procedimiento p){
        tabla.put(identificador.toUpperCase(), p);
    }

    public void registrarTipo(String lexema, Tipo T){
        tabla.put(lexema.toUpperCase(), T);

    }

    public boolean pertenece(String lexema){
        return tabla.containsKey(lexema.toUpperCase());
    }

    public Elemento getElemento(String lexema){
        return tabla.get(lexema.toUpperCase());
    }

    public String getIdentificador(){
        return identificador.toUpperCase();
    }

    public void registrarParametro(String lexema, ParametroFormal p){
        tabla.put(lexema.toUpperCase(), p);
    }

}

